The present invention generally relates to message queuing, and more particularly relates to message queuing with flexible consistency options.
Queuing, an asynchronous messaging paradigm, is used to connect loosely coupled components to form large-scale, highly-distributed, and fault-tolerant applications. Queuing decouples message producers from message consumers. Some current queuing systems try and offer queuing in a cloud computing environment. However, as a distributed storage system queuing is constrained by the CAP theorem by Brewer, which states that among the three qualities, consistency (C); availability (A); and network partition tolerance (P), only two can be achieved at the same time. As a cloud service, it is important to achieve A and P. This results in consistency being sacrificed. In the queuing context, consistency means that a message is delivered exactly once and in-order. Many conventional queuing systems provide at-least once delivery (no-loss) with no order. For applications that can tolerate out-of-order delivery, this semantic is sufficient for correctness. However, when these applications prefer in-order delivery this semantic is not sufficient.